package cn.edu.jsu.zjj.model.entity;

import cn.zhxu.bs.bean.SearchBean;
import com.baomidou.mybatisplus.annotation.*;

import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;

/**
 * <p>
 * 用户信息表
 * </p>
 *
 * @author
 * @since 2024-05-12
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName(value = "sys_user", autoResultMap = true)
@ApiModel(value="User对象", description="用户信息表")
@AllArgsConstructor
@NoArgsConstructor
@Builder
@SearchBean(
        tables = "sys_user"
)
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "用户ID")
    @TableId(value = "id", type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 唯一不重复
     */
    @ApiModelProperty(value = "工号")
    private String number;

    @ApiModelProperty(value = "头像地址")
    private String avatar;

    @ApiModelProperty(value = "用户姓名")
    private String name;

    @ApiModelProperty(value = "身份认证（0代表未认证 1代表已认证）")
    private Boolean isAuthentication;

    @ApiModelProperty(value = "手机号码")
    private String phoneNumber;

    @ApiModelProperty(value = "用户邮箱")
    private String email;

    @ApiModelProperty(value = "用户性别（0男 1女 2未知）")
    private String sex;

    @ApiModelProperty(value = "户籍地")
    private String address;

    @ApiModelProperty(value = "学历")
    private String degree;

    @ApiModelProperty(value = "密码")
    private String password;

    @ApiModelProperty(value = "职位")
    private String post;

    @ApiModelProperty(value = "个人简介")
    private String profile;

    @ApiModelProperty(value = "删除标志（0代表存在 1代表删除）")
    @TableLogic
    private Integer isDelete;

    @TableField(typeHandler = JacksonTypeHandler.class)
    @ApiModelProperty(value = "用户角色：user/admin")
    private List<String> roles;

    @ApiModelProperty(value = "注册时间")
    private LocalDateTime createTime;

    @ApiModelProperty(value = "更新时间")
    private LocalDateTime updateTime;

    @ApiModelProperty(value = "操作者id")
    private Long operUserId;

    @ApiModelProperty(value = "操作者name")
    private String operUserName;

    @ApiModelProperty(value = "创建者id")
    private Long createUserId;

    @ApiModelProperty(value = "民族")
    private String nationality;

    @ApiModelProperty(value = "出生日期")
    private LocalDateTime birthday;

    @ApiModelProperty(value = "政治面貌")
    private String politicalStatus;

    @ApiModelProperty(value = "任教学科")
    private String teachingSubjects;

    @ApiModelProperty(value = "入职时间")
    private LocalDateTime entryTime;

    @ApiModelProperty(value = "学位")
    private String academicDegree;

    @ApiModelProperty(value = "所选专业")
    private String major;

    @ApiModelProperty(value = "院校")
    private String almaMater;

    @ApiModelProperty(value = "加入何种社会团体")
    private String Type;

    @ApiModelProperty(value = "通讯地址")
    private String mailAddress;

    @ApiModelProperty(value = "毕业证附件（多个）")
    private String diplomaUrl;

    @ApiModelProperty(value = "学位证附件（多个）")
    private String degreeCertificateUrl;

    @ApiModelProperty(value = "教师资格证")
    private String teacherCertificationUrl;

    @ApiModelProperty(value = "专业id")
    private Long majorId;

    @ApiModelProperty(value = "毕业时间")
    private Date graduationDate;

    @ApiModelProperty(value = "微信号")
    private String wxNumber;

    @ApiModelProperty(value = "QQ号")
    private String qq;
}
